import { CSSProperties } from "vue";
import { RuleItem } from "./rule";

// 表单选项
export interface FormOptions {
  // 显示form组件元素类型
  type: 'cascader' | 'checkbox' | 'checkbox-group' | 'checkbox-button' | 'date-picker' | 'input' | 'input-number' | 'radio' | 'radio-group' | 'radio-button' | 'select' | 'option' | 'slider' | 'swtich' | 'time-picker' | 'time-select' | 'transfer' | 'upload' | 'editor',
  // 表单项的值
  value: any,
  // 标题
  label?: string,
  // 标识, 用于验证
  prop: string,
  // 验证规则, ep的验证是对 async-validator 的封装
  // 可其项目的 src/interface.ts 取得所有规则定义
  // https://github.com/yiminghe/async-validator/blob/master/src/interface.ts
  rules?: RuleItem[],
  // 占位符
  placeholder?: string,
  // 表单元素,特有属性
  attrs?: {
    clearable?: boolean,
    showPassword?: boolean,
    disabled?: boolean,
    // 样式
    style?: CSSProperties,
  },
  // 子组件: 用于实现 select>option 此类多级组件
  children?: FormOptions[],
  // upload
  action?: string,
}